﻿using System;
using System.Collections.Generic;

namespace SimbaRGVMonitor.Common.Data
{
    public class JsonNodes
    {
        internal JsonNodes(Dictionary<string, object> nodes)
        {
            this.nodes = nodes;
        }

        //====================================================================================================
        //以上是类型构造函数
        //----------------------------------------------------------------------------------------------------
        //以下是类型字段
        //====================================================================================================

        private readonly Dictionary<string, object> nodes;

        //====================================================================================================
        //以上是类型字段
        //----------------------------------------------------------------------------------------------------
        //以下是类型属性
        //====================================================================================================

        public int Count
        {
            get { return nodes.Count; }
        }

        public object this[string key]
        {
            get {  return nodes[key]; }
        }

        //====================================================================================================
        //以上是类型属性
        //----------------------------------------------------------------------------------------------------
        //以下是判断是否包含关键组
        //====================================================================================================

        public bool ContainsKey(string key)
        {
            return nodes.ContainsKey(key);
        }

        //====================================================================================================
        //以上是判断是否包含关键组
        //----------------------------------------------------------------------------------------------------
        //以下是获取数据
        //====================================================================================================

        public int GetInt(string key)
        {
            var value = GetString(key);
            return int.Parse(value);
        }

        public bool GetBoolean(string key)
        {
            var value = GetString(key);
            return bool.Parse(value);
        }

        public float Getfloat(string key)
        {
            var value = GetString(key);
            return float.Parse(value);
        }

        public double GetDouble(string key)
        {
            var value = GetString(key);
            return double.Parse(value);
        }

        public TimeSpan GetTimeSpan(string key)
        {
            var value = GetString(key);
            return TimeSpan.Parse(value);
        }

        public DateTime GetDateTime(string key)
        {
            var value = GetString(key);
            return DateTime.Parse(value);
        }

        public string GetString(string key)
        {
            return nodes[key].ToString();
        }
    }
}
